package cn.tianjindong.blog_manager.service;

import cn.tianjindong.blog.common.pojo.PageView;
import cn.tianjindong.blog.pojo.BlogArticle;
import cn.tianjindong.blog.pojo.BlogManager;

public interface ArticleService {
	/**
	 * 添加文章
	 * 
	 * @param article
	 *            文章对象
	 * @param keywords
	 *            文章的关键词（BlogArticle没有这个字段，所以单独由一个属性接收）
	 */
	void addArticle(BlogManager user, BlogArticle article, String keywords);

	/**
	 * 更新文章
	 * 
	 * @param article
	 *            文章对象
	 * @param keywords
	 *            文章的关键词（BlogArticle没有这个字段，所以单独由一个属性接收）
	 */
	void updateArticle(BlogManager user, BlogArticle article, String keywords);

	/**
	 * 获取所有文章的简要信息(简要信息除了没有文章内容，其余属性都存在)，因为在“文章” 页面不需要显示文章的所有信息.
	 * </p>
	 * 1.只显示没有作废的文章（tab!=-1）
	 * </p>
	 * 2.关联查询BlogArticleCategory对象,但是只查询其中的id、name、alias属性
	 * </p>
	 * 3.关联查询List<BlogTag>对象，,但是只查询其中的tagname、article_num、createtime属性
	 * 
	 * @param currentPage
	 *            当前所获取的页面
	 * @param countItem
	 *            当前页面显示的条数
	 */
	PageView<BlogArticle> getArticlePageView(int currentPage, int countItem);

	/**
	 * 通过id查询文章对象
	 * 
	 * @param id
	 * @return
	 */
	BlogArticle getArticleById(Long id);

	/**
	 * 通过文章ID删除文章（将blog_article表中的tab设为-1）
	 * 
	 * @param id
	 */
	void deleteArticle(Long id);

	/**
	 * 获取文章的总访问量
	 * 
	 * @return
	 */
	Long getArticleVisitNum();

	/**
	 * 获取文章数量
	 * @return
	 */
	Integer getArticleNum();
}
